{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Categorical Data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import copy\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from sklearn.preprocessing import LabelEncoder, LabelBinarizer\n", "import category_encoders as ce\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Identifying Categorical Data: Nominal, Ordinal and Continuous" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df_flights = pd.read_csv('https://raw.githubusercontent.com/ismayc/pnwflights14/master/data/flights.csv')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
yearmonthdaydep_timedep_delayarr_timearr_delaycarriertailnumflightorigindestair_timedistancehourminute
02014111.096.0235.070.0ASN508AS145PDXANC194.015420.01.0
12014114.0-6.0738.0-23.0USN195UW1830SEACLT252.022790.04.0
22014118.013.0548.0-4.0UAN374221609PDXIAH201.018250.08.0
320141128.0-2.0800.0-23.0USN547UW466PDXCLT251.022820.028.0
420141134.044.0325.043.0ASN762AS121SEAANC201.014480.034.0
\n", "
" ], "text/plain": [ " year month day dep_time dep_delay arr_time arr_delay carrier tailnum \\\n", "0 2014 1 1 1.0 96.0 235.0 70.0 AS N508AS \n", "1 2014 1 1 4.0 -6.0 738.0 -23.0 US N195UW \n", "2 2014 1 1 8.0 13.0 548.0 -4.0 UA N37422 \n", "3 2014 1 1 28.0 -2.0 800.0 -23.0 US N547UW \n", "4 2014 1 1 34.0 44.0 325.0 43.0 AS N762AS \n", "\n", " flight origin dest air_time distance hour minute \n", "0 145 PDX ANC 194.0 1542 0.0 1.0 \n", "1 1830 SEA CLT 252.0 2279 0.0 4.0 \n", "2 1609 PDX IAH 201.0 1825 0.0 8.0 \n", "3 466 PDX CLT 251.0 2282 0.0 28.0 \n", "4 121 SEA ANC 201.0 1448 0.0 34.0 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_flights.head()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 162049 entries, 0 to 162048\n", "Data columns (total 16 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 year 162049 non-null int64 \n", " 1 month 162049 non-null int64 \n", " 2 day 162049 non-null int64 \n", " 3 dep_time 161192 non-null float64\n", " 4 dep_delay 161192 non-null float64\n", " 5 arr_time 161061 non-null float64\n", " 6 arr_delay 160748 non-null float64\n", " 7 carrier 162049 non-null object \n", " 8 tailnum 161801 non-null object \n", " 9 flight 162049 non-null int64 \n", " 10 origin 162049 non-null object \n", " 11 dest 162049 non-null object \n", " 12 air_time 160748 non-null float64\n", " 13 distance 162049 non-null int64 \n", " 14 hour 161192 non-null float64\n", " 15 minute 161192 non-null float64\n", "dtypes: float64(7), int64(5), object(4)\n", "memory usage: 19.8+ MB\n" ] } ], "source": [ "df_flights.info()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_flights.boxplot('dep_time', 'origin',rot = 30, figsize=(5,6))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "cat_df_flights = df_flights.select_dtypes(include=['object']).copy()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
carriertailnumorigindest
0ASN508ASPDXANC
1USN195UWSEACLT
2UAN37422PDXIAH
3USN547UWPDXCLT
4ASN762ASSEAANC
\n", "
" ], "text/plain": [ " carrier tailnum origin dest\n", "0 AS N508AS PDX ANC\n", "1 US N195UW SEA CLT\n", "2 UA N37422 PDX IAH\n", "3 US N547UW PDX CLT\n", "4 AS N762AS SEA ANC" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights.head()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "248" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights.isnull().values.sum()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "carrier 0\n", "tailnum 248\n", "origin 0\n", "dest 0\n", "dtype: int64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "cat_df_flights = cat_df_flights.fillna(cat_df_flights['tailnum'].value_counts().index[0])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights.isnull().values.sum()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "carrier_count = cat_df_flights['carrier'].value_counts()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "AS 62460\n", "WN 23355\n", "OO 18710\n", "DL 16716\n", "UA 16671\n", "AA 7586\n", "US 5946\n", "B6 3540\n", "VX 3272\n", "F9 2698\n", "HA 1095\n", "Name: carrier, dtype: int64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "carrier_count" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "11" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "carrier_count.count()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['AS', 'WN', 'OO', 'DL', 'UA', 'AA', 'US', 'B6', 'VX', 'F9', 'HA'], dtype='object')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "carrier_count.index" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([62460, 23355, 18710, 16716, 16671, 7586, 5946, 3540, 3272,\n", " 2698, 1095], dtype=int64)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "carrier_count.values" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "sns.set_style('darkgrid')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.barplot(carrier_count.index, carrier_count.values, alpha=0.9)\n", "plt.title('Frequency Distribution of Carriers')\n", "plt.xlabel('Carriers', fontsize=12)\n", "plt.ylabel('Number of Occurrences', fontsize=12)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.pie(carrier_count.values,\n", " labels=carrier_count.index,\n", " autopct='%1.1f%%', shadow=True)\n", "plt.axis('equal')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Encoding Categorical Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Replacing values" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "replace_map_comp = {'carrier' :{val:idx \n", " for idx, val in enumerate(cat_df_flights['carrier']\n", " .astype('category')\n", " .cat.categories.tolist())}}" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'carrier': {'AA': 0,\n", " 'AS': 1,\n", " 'B6': 2,\n", " 'DL': 3,\n", " 'F9': 4,\n", " 'HA': 5,\n", " 'OO': 6,\n", " 'UA': 7,\n", " 'US': 8,\n", " 'VX': 9,\n", " 'WN': 10}}" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "replace_map_comp" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_replace = cat_df_flights.copy()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_replace.replace(replace_map_comp, inplace=True)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
carriertailnumorigindest
01N508ASPDXANC
18N195UWSEACLT
27N37422PDXIAH
38N547UWPDXCLT
41N762ASSEAANC
\n", "
" ], "text/plain": [ " carrier tailnum origin dest\n", "0 1 N508AS PDX ANC\n", "1 8 N195UW SEA CLT\n", "2 7 N37422 PDX IAH\n", "3 8 N547UW PDX CLT\n", "4 1 N762AS SEA ANC" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights_replace.head()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dtype('int64')" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights_replace['carrier'].dtypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Encoding labels" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_lc = cat_df_flights.copy()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "# typecasting categorical features to a category dtype to make it faster than object dtype\n", "cat_df_flights_lc['carrier'] = cat_df_flights_lc['carrier'].astype('category')\n", "cat_df_flights_lc['origin'] = cat_df_flights_lc['origin'].astype('category')" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_lc['carrier'] = cat_df_flights_lc['carrier'].cat.codes" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
carriertailnumorigindest
01N508ASPDXANC
18N195UWSEACLT
27N37422PDXIAH
38N547UWPDXCLT
41N762ASSEAANC
\n", "
" ], "text/plain": [ " carrier tailnum origin dest\n", "0 1 N508AS PDX ANC\n", "1 8 N195UW SEA CLT\n", "2 7 N37422 PDX IAH\n", "3 8 N547UW PDX CLT\n", "4 1 N762AS SEA ANC" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights_lc.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_specific = cat_df_flights.copy()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_specific['US_code'] = np.where(cat_df_flights_specific['carrier'].str.contains('US'), 1, 0)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
carriertailnumorigindestUS_code
0ASN508ASPDXANC0
1USN195UWSEACLT1
2UAN37422PDXIAH0
3USN547UWPDXCLT1
4ASN762ASSEAANC0
\n", "
" ], "text/plain": [ " carrier tailnum origin dest US_code\n", "0 AS N508AS PDX ANC 0\n", "1 US N195UW SEA CLT 1\n", "2 UA N37422 PDX IAH 0\n", "3 US N547UW PDX CLT 1\n", "4 AS N762AS SEA ANC 0" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights_specific.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_sklearn = cat_df_flights.copy()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "lb_make = LabelEncoder()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_sklearn['carrier_code'] = lb_make.fit_transform(cat_df_flights_sklearn['carrier'])" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
carriertailnumorigindestcarrier_code
0ASN508ASPDXANC1
1USN195UWSEACLT8
2UAN37422PDXIAH7
3USN547UWPDXCLT8
4ASN762ASSEAANC1
\n", "
" ], "text/plain": [ " carrier tailnum origin dest carrier_code\n", "0 AS N508AS PDX ANC 1\n", "1 US N195UW SEA CLT 8\n", "2 UA N37422 PDX IAH 7\n", "3 US N547UW PDX CLT 8\n", "4 AS N762AS SEA ANC 1" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights_sklearn.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## One-Hot encoding" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_onehot = cat_df_flights.copy()" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "# cat_df_flights_onehot = pd.get_dummies(cat_df_flights_onehot, columns=['carrier', 'dest'], prefix=['carrier', 'dest'])\n", "cat_df_flights_onehot = pd.get_dummies(cat_df_flights_onehot, columns=['carrier'], prefix=['carrier'])" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tailnumorigindestcarrier_AAcarrier_AScarrier_B6carrier_DLcarrier_F9carrier_HAcarrier_OOcarrier_UAcarrier_UScarrier_VXcarrier_WN
0N508ASPDXANC01000000000
1N195UWSEACLT00000000100
2N37422PDXIAH00000001000
3N547UWPDXCLT00000000100
4N762ASSEAANC01000000000
\n", "
" ], "text/plain": [ " tailnum origin dest carrier_AA carrier_AS carrier_B6 carrier_DL \\\n", "0 N508AS PDX ANC 0 1 0 0 \n", "1 N195UW SEA CLT 0 0 0 0 \n", "2 N37422 PDX IAH 0 0 0 0 \n", "3 N547UW PDX CLT 0 0 0 0 \n", "4 N762AS SEA ANC 0 1 0 0 \n", "\n", " carrier_F9 carrier_HA carrier_OO carrier_UA carrier_US carrier_VX \\\n", "0 0 0 0 0 0 0 \n", "1 0 0 0 0 1 0 \n", "2 0 0 0 1 0 0 \n", "3 0 0 0 0 1 0 \n", "4 0 0 0 0 0 0 \n", "\n", " carrier_WN \n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 " ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_df_flights_onehot.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_onehot_sklearn = cat_df_flights.copy()" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "lb = LabelBinarizer()" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "lb_result = lb.fit_transform(cat_df_flights_onehot_sklearn['carrier'])" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "lb_result_df = pd.DataFrame(lb_result, columns=lb.classes_)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AAASB6DLF9HAOOUAUSVXWN
001000000000
100000000100
200000001000
300000000100
401000000000
\n", "
" ], "text/plain": [ " AA AS B6 DL F9 HA OO UA US VX WN\n", "0 0 1 0 0 0 0 0 0 0 0 0\n", "1 0 0 0 0 0 0 0 0 1 0 0\n", "2 0 0 0 0 0 0 0 1 0 0 0\n", "3 0 0 0 0 0 0 0 0 1 0 0\n", "4 0 1 0 0 0 0 0 0 0 0 0" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lb_result_df.head()" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "result_df = pd.concat([cat_df_flights_onehot_sklearn, lb_result_df], axis=1)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
carriertailnumorigindestAAASB6DLF9HAOOUAUSVXWN
0ASN508ASPDXANC01000000000
1USN195UWSEACLT00000000100
2UAN37422PDXIAH00000001000
3USN547UWPDXCLT00000000100
4ASN762ASSEAANC01000000000
\n", "
" ], "text/plain": [ " carrier tailnum origin dest AA AS B6 DL F9 HA OO UA US VX WN\n", "0 AS N508AS PDX ANC 0 1 0 0 0 0 0 0 0 0 0\n", "1 US N195UW SEA CLT 0 0 0 0 0 0 0 0 1 0 0\n", "2 UA N37422 PDX IAH 0 0 0 0 0 0 0 1 0 0 0\n", "3 US N547UW PDX CLT 0 0 0 0 0 0 0 0 1 0 0\n", "4 AS N762AS SEA ANC 0 1 0 0 0 0 0 0 0 0 0" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result_df.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Binary encoding" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "cat_df_flights_ce = cat_df_flights.copy()" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "encoder = ce.BinaryEncoder(cols=['carrier'])" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "df_binary = encoder.fit_transform(cat_df_flights_ce)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
carrier_0carrier_1carrier_2carrier_3carrier_4tailnumorigindest
000001N508ASPDXANC
100010N195UWSEACLT
200011N37422PDXIAH
300010N547UWPDXCLT
400001N762ASSEAANC
\n", "
" ], "text/plain": [ " carrier_0 carrier_1 carrier_2 carrier_3 carrier_4 tailnum origin dest\n", "0 0 0 0 0 1 N508AS PDX ANC\n", "1 0 0 0 1 0 N195UW SEA CLT\n", "2 0 0 0 1 1 N37422 PDX IAH\n", "3 0 0 0 1 0 N547UW PDX CLT\n", "4 0 0 0 0 1 N762AS SEA ANC" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_binary.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Backward difference encoding" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "encoder = ce.BackwardDifferenceEncoder(cols=['carrier'])" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "df_bd = encoder.fit_transform(cat_df_flights_ce)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
interceptcarrier_0carrier_1carrier_2carrier_3carrier_4carrier_5carrier_6carrier_7carrier_8carrier_9tailnumorigindest
01-0.909091-0.818182-0.727273-0.636364-0.545455-0.454545-0.363636-0.272727-0.181818-0.090909N508ASPDXANC
110.090909-0.818182-0.727273-0.636364-0.545455-0.454545-0.363636-0.272727-0.181818-0.090909N195UWSEACLT
210.0909090.181818-0.727273-0.636364-0.545455-0.454545-0.363636-0.272727-0.181818-0.090909N37422PDXIAH
310.090909-0.818182-0.727273-0.636364-0.545455-0.454545-0.363636-0.272727-0.181818-0.090909N547UWPDXCLT
41-0.909091-0.818182-0.727273-0.636364-0.545455-0.454545-0.363636-0.272727-0.181818-0.090909N762ASSEAANC
\n", "
" ], "text/plain": [ " intercept carrier_0 carrier_1 carrier_2 carrier_3 carrier_4 \\\n", "0 1 -0.909091 -0.818182 -0.727273 -0.636364 -0.545455 \n", "1 1 0.090909 -0.818182 -0.727273 -0.636364 -0.545455 \n", "2 1 0.090909 0.181818 -0.727273 -0.636364 -0.545455 \n", "3 1 0.090909 -0.818182 -0.727273 -0.636364 -0.545455 \n", "4 1 -0.909091 -0.818182 -0.727273 -0.636364 -0.545455 \n", "\n", " carrier_5 carrier_6 carrier_7 carrier_8 carrier_9 tailnum origin dest \n", "0 -0.454545 -0.363636 -0.272727 -0.181818 -0.090909 N508AS PDX ANC \n", "1 -0.454545 -0.363636 -0.272727 -0.181818 -0.090909 N195UW SEA CLT \n", "2 -0.454545 -0.363636 -0.272727 -0.181818 -0.090909 N37422 PDX IAH \n", "3 -0.454545 -0.363636 -0.272727 -0.181818 -0.090909 N547UW PDX CLT \n", "4 -0.454545 -0.363636 -0.272727 -0.181818 -0.090909 N762AS SEA ANC " ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_bd.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Miscellaneous features" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "dummy_df_age = pd.DataFrame({'age':['0-20', '20-40', '40-60','60-80']})" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "dummy_df_age['start'], dummy_df_age['end'] = zip(*dummy_df_age['age'].map(lambda x: x.split('-')))" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
agestartend
00-20020
120-402040
240-604060
360-806080
\n", "
" ], "text/plain": [ " age start end\n", "0 0-20 0 20\n", "1 20-40 20 40\n", "2 40-60 40 60\n", "3 60-80 60 80" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dummy_df_age.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "dummy_df_age = pd.DataFrame({'age':['0-20', '20-40', '40-60','60-80']})" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "def split_mean(x):\n", " split_list = x.split('-')\n", " mean = float(split_list[0]) + float(split_list[1]) / 2\n", " return mean" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "dummy_df_age['age_mean'] = dummy_df_age['age'].apply(lambda x: split_mean(x))" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ageage_mean
00-2010.0
120-4040.0
240-6070.0
360-80100.0
\n", "
" ], "text/plain": [ " age age_mean\n", "0 0-20 10.0\n", "1 20-40 40.0\n", "2 40-60 70.0\n", "3 60-80 100.0" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dummy_df_age.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.1" } }, "nbformat": 4, "nbformat_minor": 4 }